﻿/*
给定两个二叉树，编写一个函数来检验它们是否相同。

如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。

示例 1:

输入:       1         1
		  / \       / \
		 2   3     2   3

		[1,2,3],   [1,2,3]

输出: true
示例 2:

输入:      1          1
		  /           \
		 2             2

		[1,2],     [1,null,2]

输出: false
*/

#include "AllInc.h"

struct TreeNode
{
	int val;
	TreeNode *left;
	TreeNode *right;
	TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Solution 
{
public:
	bool isSameTree(TreeNode* p, TreeNode* q) 
	{
		if (NULL == p && NULL == q)
		{
			return true;
		}
		else if (p && q)
		{
			if (p->val != q->val)
			{
				return false;
			}
			return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
		}
		else
		{
			return false;
		}
	}
};

//int main()
//{
//	TreeNode n1(1);
//	TreeNode n2(2);
//	TreeNode n3(3);
//	n1.left = &n2;
//	n1.right = &n3;
//
//	TreeNode n4(1);
//	TreeNode n5(2);
//	TreeNode n6(3);
//	n4.left = &n5;
//	n4.right = &n6;
//
//	Solution s;
//	auto result = s.isSameTree(&n1, &n4);
//
//	return 0;
//}